#include "implementacionstopword.h"
//
implementacionStopWord::implementacionStopWord(  ) 
{
	// TODO
}
//
implementacionStopWord::~implementacionStopWord()
{
}
//

void implementacionStopWord::verificarStopWord(string archivoOriginal,string archivoNuevo){
	   string archivoConPath = directorioTxtProcesados + '/' + archivoOriginal + ".txt";
	   string archivoStpwdConPath = directorioTxtProcesados + '/' + archivoNuevo;
	   FILE* archivo = fopen(archivoConPath.c_str(),"r+");
	   FILE* archivoStopWord = fopen(pathStopWords.c_str(),"r+");
	   FILE* archivoStpwd = fopen(archivoStpwdConPath.c_str(),"w+");
	   
	   if(archivoStopWord && archivo){
			int c;
			char palabraOriginal[tamanioMaximoPalabra];
			char stopWord[tamanioMaximoPalabra];
			memset(palabraOriginal,'\0',tamanioMaximoPalabra);
			int d;
			bool noEsStopWord = true;
			
			while( d = fscanf(archivo,"%s",palabraOriginal) != EOF ){
			     memset(stopWord,'\0',tamanioMaximoPalabra);
			     noEsStopWord = true;
			     rewind(archivoStopWord);
			     while( c = fscanf(archivoStopWord,"%s",stopWord) != EOF ){
		        	if(strcmp(palabraOriginal,stopWord)==0){
		        		noEsStopWord=false;
		        		break;
		        	}
	        	 	memset(stopWord,'\0',tamanioMaximoPalabra);
        	 	 }
	        	 if(noEsStopWord){
	        	 		string w=(palabraOriginal);
		        		string espacio=(" ");
		        		fwrite (w.c_str() , 1 ,w.length() , archivoStpwd );	
		        		fwrite (espacio.c_str() , 1 ,espacio.length() , archivoStpwd );	
        	 	  }
		         
			    //limpio todo para evitar problemas de asignacion
				memset(palabraOriginal,'\0',tamanioMaximoPalabra);
			}
			fflush(archivoStpwd);
			fclose(archivoStopWord);
			fclose(archivo);
			fclose(archivoStpwd);
			std::remove(archivoConPath.c_str()); //borro el archivo original procesado del directorio
		}
}


string implementacionStopWord::verificarStopWord(string palabra){
   FILE* archivoStopWord = fopen(pathStopWords.c_str(),"r+");
      
   if(archivoStopWord){
	char stopWord[tamanioMaximoPalabra];
	bool noEsStopWord = true;
	int c;
	
	while( c = fscanf(archivoStopWord,"%s",stopWord) != EOF ){
       	if(strcmp(palabra.c_str(),stopWord)==0){
       		noEsStopWord=false;
       		break;
       	}
      	memset(stopWord,'\0',tamanioMaximoPalabra);
    }
    
    //cierro los archivos
    fclose(archivoStopWord);
	archivoStopWord = NULL;
    
    //si es stopword o no.
    if(noEsStopWord){
     	return palabra;	
    }
    else{
    	return "";   
   	}
   }
   else{
   		return palabra;
   }
}

bool implementacionStopWord::esStopWord(string palabra){
   FILE* archivoStopWord = fopen(pathStopWords.c_str(),"r+");
      
   if(archivoStopWord){
	char stopWord[tamanioMaximoPalabra];
	bool EsStopWord = false;
	int c;
	
	while( c = fscanf(archivoStopWord,"%s",stopWord) != EOF ){
       	if(strcmp(palabra.c_str(),stopWord)==0){
       		EsStopWord=true;
       		break;
       	}
      	memset(stopWord,'\0',tamanioMaximoPalabra);
    }
    
    //cierro los archivos
    fclose(archivoStopWord);
	archivoStopWord = NULL;
    return EsStopWord;
    
   }
   else{
   		return false;
   }
}
